import CryptoJS from 'crypto-js'

/**
 * AES加密配置
 */
const AES_CONFIG = {
  key: 'xytech42xytech42',
  iv: 'qP2$bG9;vA0^uW0:'
}

/**
 * AES加密
 * @param text 要加密的文本
 * @returns 加密后的字符串
 */
export function aesEncrypt(text: string): string {
  try {
    const key = CryptoJS.enc.Utf8.parse(AES_CONFIG.key)
    const iv = CryptoJS.enc.Utf8.parse(AES_CONFIG.iv)
    
    const encrypted = CryptoJS.AES.encrypt(text, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
    
    return encrypted.toString()
  } catch (error) {
    console.error('AES encryption failed:', error)
    throw new Error('加密失败')
  }
}

/**
 * AES解密
 * @param encryptedText 加密的文本
 * @returns 解密后的字符串
 */
export function aesDecrypt(encryptedText: string): string {
  try {
    const key = CryptoJS.enc.Utf8.parse(AES_CONFIG.key)
    const iv = CryptoJS.enc.Utf8.parse(AES_CONFIG.iv)
    
    const decrypted = CryptoJS.AES.decrypt(encryptedText, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
    
    return decrypted.toString(CryptoJS.enc.Utf8)
  } catch (error) {
    console.error('AES decryption failed:', error)
    throw new Error('解密失败')
  }
}

/**
 * 密码加密（登录时使用）
 * @param password 原始密码
 * @returns 加密后的密码
 */
export function encryptPassword(password: string): string {
  return aesEncrypt(password)
}